home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 43
/
Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso
/
Aminet
/
hard
/
hack
/
ps2m.readme
< prev
next >
Wrap
Text File
|
2001-05-03
|
8KB
|
199 lines
Short: Ultimate Amiga PS/2 WheelMouseController
Author: rdc@mindless.com
Uploader: rdc@mindless.com
Version: 1.3
Type: hard/hack
Amiga PS/2 Wheel Mouse Controller - new version:
- corrected bug in reference PCB design
made by Marc SAVART <sil51@ifrance.com>
Advantages of this controller:
- full open source under GPL
(General Public License, text of license included)
- linear movement interpolation: mouse movements will be
ideal smooth at any screen frame rates
- MMB (Middle Mouse Button) support
- detection of Amiga mouse counters overrun
(127 pixels per frame for DblPAL 48Hz)
- full Plug'n'Play support:
hotswap - you can change mouse "on the fly"
- mouse hangs detection: controller checks mouse every
2 seconds and will reset it if mouse doesn't reply
- support of popular Microsoft Intellimouse wheel protocol
(for example, Genius NetScroll)
- fully compatible with Amiga NewMouse wheel standard
- fully compatible with WheelBusMouse software
- you can simultaneously use mouse & 2 joysticks
- no "calibration" requirements
- wheel works in any screen mode
- horizontal scrolling even on one-wheel mouse
- very low CPU load in wheel mode
- most advanced Amiga PS/2 mouse controller :-)
More detailed info:
- detection of Amiga mouse counters overrun:
Amiga has only one-byte signed counters for mouse, and AmigaOS
checks them only one time per vblank. This means that mouse may
move only 127*VBlankFreq pixels per second (6096 pixels per
second for default DblPAL). If this value was overran, AmigaOS
can't detect true movement of mouse and pointer will disorderly
jump. For correct this, my PS/2 controller limits movement to
maximum 6000 pixels per second. If mouse moves faster, movement
will be remembered and executed at 6000 pixels per second.
Slower movements will be always executed at real speed.
- linear movement interpolation:
As we know, RS-232C (aka "COM") mice at PeeCee are extremely
poor quality - mouse pointer with them doesn't move, it jumps.
It is because generic 3-button RS-232C mouse reports about
movement only 25 times per second. PS/2 mice work better - all
of them can report about state 80 times per second, and most of
them (excluding 5-button mice) can report 200 times per second.
But it is not an ideal because refresh rate of mouse (for
example, 80fps of Genius NetScroll Optical) interferes with
similar refresh rate (for example, 72Hz of Super72). For correct
this, my controller moves "virtual Amiga mouse" smoothly. If
user moves PS/2 mouse at 500 pixels per second, Amiga will get
from my PS/2 controller true 500 counts per second, with true
2-milliseconds intervals - you can get oscilliscope and check it.
Most another PeeCee-mouse-controllers don't have similar feature,
and move "virtual Amiga mouse" by "count packets" after every
byte packet from PeeCee-mouse. For example, if user moves
RS-232C mouse at 500 pixels per second, and mouse sends 25
reports per second, Amiga will get 25 packets of 20 fast (some
microsecond between counts) counts per second, with approx.40
milliseconds interval between packets. If user has 75Hz screen
refresh rate, mouse pointer will update only every three vblank,
and jumps of pointer (in comparison with ideally smooth Amiga
mouse) will only incline user to suicide using mouse cord :-)
My PS/2 controller is free from this bug. Theoretically I can do
even smooth RS-232C mouse controller, but is it nonsense because
of RS-232C mice death. Modern optical mice already don't have
RS-232C versions, but there is no modern mice without PS/2 version.
- mouse hangs detection:
Some Chinese mice are very cheap and very unstable. Integrated
to mouse controller can hang and even don't response to reset
command. These mice on PeeCee require reconnect (and sometimes
reboot because of not-PnP initial nature of PeeCee). My
controller in case of 2-seconds silence (user doesn't touch
mouse) asks mouse about state. If mouse doesn't respond,
controller will automatically take away power souce for some
time.
- full Plug'n'Play support:
Because of previous feature, controller will detect mouse
replacement. Unlike PeeCee, wheel function (or it's absence)
will be detected automatically. You don't need to replace
drivers if you change mouse "on the fly" :)
- support of popular Microsoft Intellimouse wheel protocol
Microsoft (for this paragraph it is a company name, not an abuse)
instead of it's normal practice to hide all details, published
protocol of wheel mouse. It has two "layers": protocol of wheel
mouse, and protocol of 5-button wheel mouse. There are many
Microsoft Intellimouse compatible devices (for example, Genius
NetScroll Optical), and all of them will work with wheel at my
controller. Unfortunately, protocol of my Genius mouse differs
from Microsoft 5-button protocol, and I don't support 5 buttons
yet.
I don't have info about Intellimouse compatibility of other
devices. Don't ask me.
- fully compatible with Amiga NewMouse wheel standard
Amiga NewMouse standard describes an internal AmigaOS protocol
for wheel mice. There are some NewMouse-compatible sofware,
MUIWheel and Directory Opus Magellan for example. All this
software will work with my PS/2 controller.
- fully compatible with WheelBusMouse software
WheelBusMouse is a software driver early released by me, that
allows to use any wheel mouse without controller (but you must
alter the mouse). My PS/2 controller is fully electrically
compatible with WBM package. This means that you can install
WBM driver and use altered wheel mouse instead of soldering
PS/2 controller. Or you even can connect second mouse and use
it as a scroller :-)
- you can simultaneously use mouse & 2 joysticks
You can use joystick(s) in parallel with mouse: pressing "Fire"
of any joystick will disable mouse function on this port.
If you press "Fire" on Joy1 (wheel function) - wheel will be
reseted to initial phase (don't touch wheel during game).
If you press "Fire" on Joy2 (mouse port) - mouse will be disabled
at all. For protect against probable mouse movement, mouse will
be enabled only after any mouse button pressing.
- no "calibration" requirements
My controller doesn't use analog inputs and doesn't require
calibration (like Mroocheck interface from Elbox).
- wheel works in any screen mode
Wheel works in any screen mode - you can simultaneously use
wheeled applications on PAL, DblPAL, Super72 or any other
screens (unlike Mroocheck with horizontal rate setting).
- horizontal scrolling even on one-wheel mouse
You can switch vertical scrolling to horizontal by qualifier
pressing - like MMB in Mroocheck, but you can select any
qualifier key or joystick/mouse button. For example - I use
left ALT.
- very low CPU load in wheel mode
This controller doesn't use any software emulated serial protocols
like CD32 joypad and analog-to-digital conversions like Mroocheck.
It reduces slow chipset reading/writing cycles number to absolute
minimum, and this wheel solution is the fastest ever made for Amiga.
- most advanced Amiga PS/2 mouse controller.
Do you doubt in this yet? :) ;) =)
All instructions included. Have fun!
============================= Archive contents =============================
Original Packed Ratio Date Time Name
-------- ------- ----- --------- -------- -------------
599 347 42.0% 07-Apr-01 13:02:26 +newmouse.h
146 94 35.6% 07-Apr-01 16:14:48 +SCOPTIONS
5594 1982 64.5% 07-Apr-01 17:51:30 +wbm.c
18009 7015 61.0% 29-Mar-01 09:59:00 gpl.txt
15336 14769 3.6% 27-Apr-01 00:36:36 +ps2m_components.png
7935 7888 0.5% 27-Apr-01 00:37:16 +ps2m_solderside.png
1049 458 56.3% 04-Jun-00 23:05:42 +16f876.i
4339 996 77.0% 09-Jul-00 18:00:08 +macros.i
9120 2866 68.5% 07-Apr-01 18:40:54 +ps2m.asm
2432 1008 58.5% 07-Apr-01 18:40:56 ps2m.hex
2934 2934 0.0% 26-Mar-01 17:22:30 ps2m.png
10844 4488 58.6% 27-Apr-01 00:41:16 ps2m_manual
1624 1065 34.4% 07-Apr-01 17:51:42 wbm
-------- ------- ----- --------- --------
79961 45910 42.5% 27-Apr-101 00:33:34 13 files